﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.Core.ProcessManager.Client.UI;
using Sinacor.Infra.UI.Common;
using PSE.ProcessManager.Common.Process;

namespace Sinacor.UI.Bovespa.ImportacaoExportacao.Communication
{
    public class ProcessoImportacaoDistribuicaoProcessamento : BaseCommunicationProcess<Sinacor.Process.Bovespa.Distribuicao.Client.ProcessamentoImportacao>
    {
        #region Eventos

        public event Action ProcessamentoConcluido;

        #endregion

        #region Construtor

        public ProcessoImportacaoDistribuicaoProcessamento(SessionInformation session)
            : base(session)
        {
            this.Process.ProcessamentoConcluido += new EventHandler(Process_ProcessamentoConcluido);
            Connect();
        }

        #endregion

        #region Event Handlers

        private void Process_ProcessamentoConcluido(object sender, EventArgs e)
        {
            try
            {
                if (ProcessamentoConcluido != null)
                    ProcessamentoConcluido();
            }
            catch (Exception ex)
            {
                base.HandleFault(ex);
            }
        }

        #endregion

        #region Métodos Públicos

        /// 
        /// <param name="model"></param>
        public void ProcessarDistribuicao(Model.Parameter.FiltroProcessamentoDistribuicao model)
        {
            Translator.ModelToProcessEntity.ImportacaoDistribuicao translatorRequest;

            try
            {
                translatorRequest = new Translator.ModelToProcessEntity.ImportacaoDistribuicao();
                this.Process.ProcessarDistribuicao(translatorRequest.ToFiltroProcessamentoDistribuicao(model));
            }
            catch (Exception ex)
            {
                base.HandleFault(ex);
            }
        }

        #endregion
    }
}
